/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package aqu.persistencia.entity;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author angelquin
 */
@Entity
@Table(name = "con_cabeceracontable")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "ConCabeceracontable.findAll", query = "SELECT c FROM ConCabeceracontable c"),
    @NamedQuery(name = "ConCabeceracontable.findByConCodigoCabcon", query = "SELECT c FROM ConCabeceracontable c WHERE c.conCodigoCabcon = :conCodigoCabcon"),
    @NamedQuery(name = "ConCabeceracontable.findByConFechaCabcon", query = "SELECT c FROM ConCabeceracontable c WHERE c.conFechaCabcon = :conFechaCabcon"),
    @NamedQuery(name = "ConCabeceracontable.findByConDescripcionCabcon", query = "SELECT c FROM ConCabeceracontable c WHERE c.conDescripcionCabcon = :conDescripcionCabcon"),
    @NamedQuery(name = "ConCabeceracontable.findByConModuloCabcon", query = "SELECT c FROM ConCabeceracontable c WHERE c.conModuloCabcon = :conModuloCabcon"),
    @NamedQuery(name = "ConCabeceraContable.findByFechaTipoAsiento", query = "SELECT c FROM ConCabeceracontable c WHERE c.conFechaCabcon between :conInicio and :conFin and conCodigoTipasi = :TipoAsi"),
    @NamedQuery(name = "ConCabeceraContable.findByFechaTipoAsientoProv", query = "SELECT c FROM ConCabeceracontable c WHERE c.conFechaCabcon between :conInicio and :conFin and conCodigoTipasi = :TipoAsi and cxcProvedor = :Proveedor"),
    @NamedQuery(name = "ConCabeceraContable.findByFechaTipoAsientoCli", query = "SELECT c FROM ConCabeceracontable c WHERE c.conFechaCabcon between :conInicio and :conFin and conCodigoTipasi = :TipoAsi and cxcCliente = :Cliente"),
    @NamedQuery(name = "ConCabeceracontable.findByConNumeroCabcon", query = "SELECT c FROM ConCabeceracontable c WHERE c.conNumeroCabcon = :conNumeroCabcon")})
public class ConCabeceracontable implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "CON_CODIGO_CABCON")
    private String conCodigoCabcon;
    @Basic(optional = false)
    @NotNull
    @Column(name = "CON_FECHA_CABCON")
    @Temporal(TemporalType.TIMESTAMP)
    private Date conFechaCabcon;
    @Size(max = 60)
    @Column(name = "CON_DESCRIPCION_CABCON")
    private String conDescripcionCabcon;
    @Size(max = 30)
    @Column(name = "CON_MODULO_CABCON")
    private String conModuloCabcon;
    @Size(max = 10)
    @Column(name = "CON_NUMERO_CABCON")
    private String conNumeroCabcon;
    @JoinColumn(name = "CON_CODIGO_TIPASI", referencedColumnName = "CON_CODIGO_TIPASI")
    @ManyToOne(optional = false)
    private ConTipoAsiento conCodigoTipasi;
    @JoinColumn(name = "CON_CODIGO_ESTCAB", referencedColumnName = "CON_CODIGO_ESTCAB")
    @ManyToOne(optional = false)
    private ConEstadoCabecera conCodigoEstcab;
    @JoinColumn(name = "CON_CODIGO_EMP", referencedColumnName = "CON_CODIGO_EMP")
    @ManyToOne(optional = true)
    private ConEmpresa conCodigoEmp;
    @JoinColumn(name = "CXP_CODIGO_PRO", referencedColumnName = "CXP_CODIGO_PRO")
    @ManyToOne(optional = true)
    private CxpProveedor cxcProvedor;
    @JoinColumn(name = "CXC_CODIGO_CLI", referencedColumnName = "CXC_CODIGO_CLI")
    @ManyToOne(optional = true)
    private CxcCliente cxcCliente;

    public ConCabeceracontable() {
    }

    public ConCabeceracontable(String conCodigoCabcon) {
        this.conCodigoCabcon = conCodigoCabcon;
    }

    public ConCabeceracontable(String conCodigoCabcon, Date conFechaCabcon) {
        this.conCodigoCabcon = conCodigoCabcon;
        this.conFechaCabcon = conFechaCabcon;
    }

    public CxcCliente getCxcCliente() {
        return cxcCliente;
    }

    public void setCxcCliente(CxcCliente cxcCliente) {
        this.cxcCliente = cxcCliente;
    }

    public CxpProveedor getCxcProvedor() {
        return cxcProvedor;
    }

    public void setCxcProvedor(CxpProveedor cxcProvedor) {
        this.cxcProvedor = cxcProvedor;
    }

    public String getConCodigoCabcon() {
        return conCodigoCabcon;
    }

    public void setConCodigoCabcon(String conCodigoCabcon) {
        this.conCodigoCabcon = conCodigoCabcon;
    }

    public Date getConFechaCabcon() {
        return conFechaCabcon;
    }

    public void setConFechaCabcon(Date conFechaCabcon) {
        this.conFechaCabcon = conFechaCabcon;
    }

    public String getConDescripcionCabcon() {
        return conDescripcionCabcon;
    }

    public void setConDescripcionCabcon(String conDescripcionCabcon) {
        this.conDescripcionCabcon = conDescripcionCabcon;
    }

    public String getConModuloCabcon() {
        return conModuloCabcon;
    }

    public void setConModuloCabcon(String conModuloCabcon) {
        this.conModuloCabcon = conModuloCabcon;
    }

    public String getConNumeroCabcon() {
        return conNumeroCabcon;
    }

    public void setConNumeroCabcon(String conNumeroCabcon) {
        this.conNumeroCabcon = conNumeroCabcon;
    }

    public ConTipoAsiento getConCodigoTipasi() {
        return conCodigoTipasi;
    }

    public void setConCodigoTipasi(ConTipoAsiento conCodigoTipasi) {
        this.conCodigoTipasi = conCodigoTipasi;
    }

    public ConEstadoCabecera getConCodigoEstcab() {
        return conCodigoEstcab;
    }

    public void setConCodigoEstcab(ConEstadoCabecera conCodigoEstcab) {
        this.conCodigoEstcab = conCodigoEstcab;
    }

    public ConEmpresa getConCodigoEmp() {
        return conCodigoEmp;
    }

    public void setConCodigoEmp(ConEmpresa conCodigoEmp) {
        this.conCodigoEmp = conCodigoEmp;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (conCodigoCabcon != null ? conCodigoCabcon.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ConCabeceracontable)) {
            return false;
        }
        ConCabeceracontable other = (ConCabeceracontable) object;
        if ((this.conCodigoCabcon == null && other.conCodigoCabcon != null) || (this.conCodigoCabcon != null && !this.conCodigoCabcon.equals(other.conCodigoCabcon))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "emprsss.ConCabeceracontable[ conCodigoCabcon=" + conCodigoCabcon + " ]";
    }
    
}
